// 用户相关API调用函数

import request from '@/utils/request'

/**
 * 用户登录
 * @param {Object} data - 登录参数
 * @param {string} data.userEmail - 登录邮箱
 * @param {string} data.userPassword - 登录密码（明文，后端MD5加密）
 * @returns {Promise} - 成功返回token字符串
 */
export function login(data) {
  return request({
    url: '/user/login',
    method: 'post',
    data
  })
}

/**
 * 用户注册
 * @param {Object} data - 注册参数
 * @param {string} data.userName - 用户名（唯一）
 * @param {string} data.userEmail - 注册邮箱
 * @param {string} data.userPassword - 注册密码（明文）
 * @returns {Promise} - 成功返回注册结果提示
 */
export function register(data) {
  return request({
    url: '/user/register',
    method: 'post',
    data
  })
}

/**
 * 用户注销
 * @returns {Promise} - 成功返回注销结果提示
 */
export function logout() {
  return request({
    url: '/user/logout',
    method: 'post'
  })
}

/**
 * 获取当前登录用户信息
 * @returns {Promise} - 成功返回用户信息（不含密码）
 */
export function getCurrentUser() {
  return request({
    url: '/user/userinfo',
    method: 'get'
  })
}

/**
 * 更新用户个人信息
 * @param {Object} data - 更新参数（按需传递）
 * @param {string} [data.realName] - 真实姓名
 * @param {string} [data.phone] - 手机号
 * @param {string} [data.gender] - 性别
 * @param {string} [data.birthday] - 生日
 * @param {string} [data.signature] - 个性签名
 * @returns {Promise} - 成功返回更新后的用户信息
 */
export function updateProfile(data) {
  return request({
    url: '/user/updateInfo',
    method: 'put',
    data
  })
}

/**
 * 修改密码（需先验证邮箱）
 * @param {Object} data - 修改密码参数
 * @param {string} data.email - 注册邮箱（用于验证）
 * @param {string} data.oldPassword - 原密码
 * @param {string} data.newPassword - 新密码
 * @param {string} data.confirmPassword - 确认新密码
 * @returns {Promise} - 成功返回修改结果提示
 */
export function changePassword(data) {
  return request({
    url: '/user/updatePassword',
    method: 'post',
    data
  })
}

/**
 * 验证邮箱是否已注册
 * @param {Object} data - 验证参数
 * @param {string} data.email - 待验证邮箱
 * @returns {Promise} - 成功返回验证结果
 */
export function checkEmail(data) {
  return request({
    url: '/user/checkEmail',
    method: 'post',
    data
  })
}

/**
 * 验证邮箱与当前用户匹配（修改密码前置）
 * @param {Object} data - 验证参数
 * @param {string} data.email - 待验证邮箱
 * @returns {Promise} - 成功返回验证通过提示
 */
export function verifyEmail(data) {
  return request({
    url: '/user/verifyEmail',
    method: 'post',
    data
  })
}

/**
 * 获取所有用户信息（管理员功能）
 * @returns {Promise} - 成功返回用户列表（不含密码）
 */
export function getAllUsers() {
  return request({
    url: '/user/allUser',
    method: 'get'
  })
}

/**
 * 修改用户状态（管理员功能）
 * @param {Object} data - 修改参数
 * @param {number} data.userId - 用户ID
 * @param {string} data.userStatus - 状态（0-可用，1-封禁）
 * @returns {Promise} - 成功返回修改结果提示
 */
export function updateUserStatus(data) {
  return request({
    url: '/user/updateStatus',
    method: 'put',
    data
  })
}

/**
 * 上传头像
 * @param {FormData} formData - 包含头像文件的FormData对象
 */
export function uploadAvatar(formData) {
  return request({
    url: '/upload/file',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

export function resetAvatarToDefault() {
  // 调用updateAvatar接口，传递空字符串表示使用默认头像
  return updateAvatar('')
}

/**
 * 获取用户头像
 * @returns {Promise} - 成功返回头像URL
 */
export function getAvatar() {
  return request({
    url: '/user/avatar',
    method: 'get'
  })
}

/**
 * 更新用户头像URL
 * @param {string} avatarUrl - 头像OSS访问URL
 * @returns {Promise} - 成功返回头像更新结果及URL
 */
export function updateAvatar(avatarUrl) {
  return request({
    url: '/user/updateAvatar',
    method: 'patch',
    params: { avatarUrl }
  })
}

/**
 * 通过邮箱重置密码
 * @param {Object} data - 重置参数
 * @param {string} data.email - 注册邮箱
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} - 成功返回重置结果提示
 */
export function resetPasswordByEmail(data) {
  return request({
    url: '/user/resetPasswordByEmailDirect',
    method: 'post',
    data
  })
}
